<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>作用域</title>
</head>
<body>
<script>
    //8.1全局变量和局部变量
    //1.在任何地方都可以访问到的变量就是全局变量，全局变量所在的区域就是全局作用域
    var a=10;   //全局变量
    //2.只在固定的代码片段内可访问到的变量，最常见的例如函数内部的变量，就是局部变量。局部变量所在的区域就是局部作用域(函数作用域)
    function fun() {
        var b=20;   //局部变量
    }
    //8.2变量提升
    //1.变量提升就是将变量的声明部分提升到代码的最前面，不提升变量的赋值部分
    //2.函数提升JavaScript解析器首先会把当前作用域的函数声明提前到整个作用域的最前面
    console.log(d);  //输出undefined，变量的值无法提升
    var d=10;
    fun2();  //输出20   函数提升，叫做函数的预加载（函数可以先调用，后声明，不建议）
    function fun2() {
        var d=20;
        console.log(d);  //输出20
    }
    function fun() {
        console.log(c);  //undefined    变量提升
        var c=10;
    }
    // console.log(c);  //报错c is not define

</script>
</body>
</html>